package com.atguigu.gmall.realtime.utils;

import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * 通过连接池获取 Jedis 的工具类
 *
 * @author lvbingbing
 * @date 2022-04-07 21:29
 */
@Slf4j
public class RedisUtils {

    public static JedisPool jedisPool = null;

    public static Jedis getJedis() {
        if (jedisPool == null) {
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            // 设置最大可连接数
            jedisPoolConfig.setMaxTotal(100);
            // 设置连接耗尽是否等待
            jedisPoolConfig.setBlockWhenExhausted(true);
            // 等待时间
            jedisPoolConfig.setMaxWaitMillis(2000);
            // 最大闲置连接数
            jedisPoolConfig.setMaxIdle(5);
            // 最小闲置连接数
            jedisPoolConfig.setMinIdle(5);
            // 获取连接的时候进行一下测试 ping pong
            jedisPoolConfig.setTestOnBorrow(true);
            jedisPool = new JedisPool(jedisPoolConfig,  "hadoop102", 6379, 1000);
            log.info("创建连接池");
            return jedisPool.getResource();
        }
        int numActive = jedisPool.getNumActive();
        log.info("当前从该池中借用的连接数：{}", numActive);
        return jedisPool.getResource();
    }

    public static void main(String[] args) {
        Jedis jedis = getJedis();
        String ping = jedis.ping();
        log.info("ping：{}", ping);
    }
}
